package cn.com.allunion.sms.service.mybatis;

import cn.com.allunion.common.page.QueryResult;
import cn.com.allunion.sms.pojo.Smstimer;

import java.util.List;

/**
 * 定时发送短信定时器业务逻辑接口
 * Created by YangJie on 2016/4/18.
 */
public interface SmstimerService {
    /**
     * 保存定时发送短信的定时器
     * @param smstimer 定时发送短信的定时器
     * @return 保存成功返回true，否者返回false
     */
    public boolean save(Smstimer smstimer) ;

    /**
     * 根据jobName获取定时器
     * @param jobName jobName
     * @return 定时器对象
     */
    List<Smstimer> findByJobName(String jobName) ;

    /**
     * 根据多条件查询符合条件的定时器
     * @param userId timer创建用户
     * @param createStartTime 起始创建时间
     * @param createEndTime   最后创建时间
     * @param timingStartTime 起始发送时间
     * @param timingEndTime   最后发送时间
     * @param receiveNum      接收手机号
     * @param smsContext      发送内容
     * @param state           发送状态
     * @return 符合条件的定时器集合
     */
    List<Smstimer> findByCriteria(String userId, String createStartTime,
                                  String createEndTime, String timingStartTime, String timingEndTime,
                                  String receiveNum, String smsContext, String state) ;

    /**
     * 根据多条件查询符合条件的定时器，pageCurrent或pageSize为-1时，查询全部
     * @param userId timer创建用户
     * @param createStartTime 起始创建时间
     * @param createEndTime   最后创建时间
     * @param timingStartTime 起始发送时间
     * @param timingEndTime   最后发送时间
     * @param receiveNum      接收手机号
     * @param smsContext      发送内容
     * @param state           发送状态
     * @param pageCurrent     查询页码
     * @param pageSize        页容量
     * @return 符合条件的定时器集合
     */
    QueryResult<Smstimer> findByCriteria(String userId, String createStartTime,
                                         String createEndTime, String timingStartTime, String timingEndTime,
                                         String receiveNum, String smsContext, String state, int pageCurrent, int pageSize) ;

    /**
     * 更新timer对象
     * @param smstimer 要更新的timer对象
     * @return 更新成功返回true，否者返回false
     */
    boolean update(Smstimer smstimer) ;

    /**
     * 根据定时器Id删除定时器
     * @param timerId 定时器id
     * @return 删除成功返回true，否者返回false
     */
    boolean deleteById(String timerId) ;
}
